package com.thd.kc.service;


import com.thd.kc.dto.ArticleDto;
import com.thd.kc.dto.AttachDto;
import com.thd.kc.vuedto.VueSelectDto;

import java.util.List;

public interface KcService {

    /**
     * 保存 article
     * @param articleDto
     * @return
     */
    public ArticleDto saveArticle(ArticleDto articleDto);
    /**
     * 更新 article
     * @param articleDto
     * @return
     */
    public ArticleDto updateArticle(ArticleDto articleDto);

    /**
     * 根据id查询article
     * @param id
     * @return
     */
    public ArticleDto queryArticleById(String id);

    /**
     * 保存/更新 article
     * @param articleDto
     * @return
     */
    public ArticleDto saveOrUpdateArticle(ArticleDto articleDto);

    /**
     * 查询article列表
     * @return
     */
    public List<ArticleDto> queryArticleListByDb(ArticleDto articleDto);

    /**
     * 查询article列表
     * @return
     */
    public List<ArticleDto> queryArticleListByLucene(ArticleDto articleDto);



    /**
     * 查询总数
     * @param articleDto
     * @return
     */
    public Integer queryArticleListTotalByDb(ArticleDto articleDto);
    /**
     * 查询总数
     * @param articleDto
     * @return
     */
    public Integer queryArticleListTotalByLucene(ArticleDto articleDto);
    /**
     * 删除article
     * @param id
     */
    public void deleteArticle(String id);

    /**
     * 查询字典
     * @param classify 字典分类
     */
    public List<VueSelectDto> queryDict(String classify);

    /**
     * 查询字典
     * @param classify
     * @param kw
     * @return
     */
    public List<VueSelectDto> queryArticleTags(String classify,String kw);

    /**
     * 对文章进行索引，以便可以进行全文检索
     * @param articleDto
     */
    public void indexArticle(ArticleDto articleDto);

    /**
     * 对所有文章进行lucene索引
     */
    public void indexAllArticle();

    /**
     * 对文章进行索引
     * @param id 文章id
     */
    public void indexArticleById(String id);

    /**
     * 生成词云
     * @param articleDto
     */
    public void createWordCloud(ArticleDto articleDto) throws Exception;

    /**
     * 保存附件信息
     * @param dto
     */
    public void saveAttach(AttachDto dto);

    /**
     *  删除附件信息
     * @param id
     */
    public void deleteAttach(String id);

    /**
     * 根据关联id和分类查询附件列表
     * @param relaId
     * @param classify
     * @return
     */
    public List<AttachDto> queryAttachListByRelaIdAndClassify(String relaId,String classify);

    /**
     *  查询附件信息
     * @param attachId
     */
    public AttachDto queryAttachById(String attachId);



}
